package rothag.views.homemenu;

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import rothag.controller.MainController;
import rothag.graphics.*;

import rothag.views.JButtonBase;
import rothag.views.JPanelBase;

/**
 *
 * @author Gaetan
 */
public class HomeMenuJPanel extends JPanelBase implements ActionListener {

    private NouvellePartieJPanel nouvellePartiePanel;
    private ChargerPartieJPanel chargerPartiePanel;
    private TopTenJPanel topTenPanel;
    private JButtonBase nouvellePartieButton;
    private JButtonBase chargerPartieButton;
    private JButtonBase topScoreButton;
    private int largeurBouton;
    private int hauteurBouton;

    public HomeMenuJPanel(MainController controller) {
        super(controller);

        setOpaque(false);
        largeur = GraphicsParameters.mainWidth;
        hauteur = GraphicsParameters.mainHeight;

        largeurBouton = 200;
        hauteurBouton = 70;

        int espace = 20;
        int x = (largeur - largeurBouton) / 2;
        int y = (hauteur - 3 * (hauteurBouton + espace)) / 2;

        Font font = GraphicsHelper.getFont(20, null);

        nouvellePartieButton = new JButtonBase("Nouvelle partie");
        nouvellePartieButton.setFont(font);
        nouvellePartieButton.setBounds(x, y, largeurBouton, hauteurBouton);
        nouvellePartieButton.addActionListener(this);
        add(nouvellePartieButton);

        y += espace + hauteurBouton;

        chargerPartieButton = new JButtonBase("Charger partie");
        chargerPartieButton.setFont(font);
        chargerPartieButton.setBounds(x, y, largeurBouton, hauteurBouton);
        chargerPartieButton.addActionListener(this);
        add(chargerPartieButton);

        y += espace + hauteurBouton;

        topScoreButton = new JButtonBase("Top 10");
        topScoreButton.setFont(font);
        topScoreButton.setBounds(x, y, largeurBouton, hauteurBouton);
        topScoreButton.addActionListener(this);
        add(topScoreButton);

        nouvellePartiePanel = new NouvellePartieJPanel(controller);
        GraphicsHelper.setBounds((largeur - nouvellePartiePanel.getLargeur()) / 2, (hauteur - nouvellePartiePanel.getHauteur()) / 2, nouvellePartiePanel);
        nouvellePartiePanel.setVisible(false);
        add(nouvellePartiePanel);
        setComponentZOrder(nouvellePartiePanel, 0);

        chargerPartiePanel = new ChargerPartieJPanel(controller);
        GraphicsHelper.setBounds((largeur - chargerPartiePanel.getLargeur()) / 2, (hauteur - chargerPartiePanel.getHauteur()) / 2, chargerPartiePanel);
        chargerPartiePanel.setVisible(false);
        add(chargerPartiePanel);
        setComponentZOrder(chargerPartiePanel, 0);

        topTenPanel = new TopTenJPanel(controller);
        GraphicsHelper.setBounds((largeur - topTenPanel.getLargeur()) / 2, (hauteur - topTenPanel.getHauteur()) / 2, topTenPanel);
        topTenPanel.setVisible(false);
        add(topTenPanel);
        setComponentZOrder(topTenPanel, 0);
    }

    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == nouvellePartieButton) {
            nouvellePartie();
        } else if (e.getSource() == chargerPartieButton) {
            chargerPartie();
        } else if (e.getSource() == topScoreButton) {
            topScore();
        }
    }

    public void setVisibleButton(boolean valeur) {
        nouvellePartieButton.setVisible(valeur);
        chargerPartieButton.setVisible(valeur);
        topScoreButton.setVisible(valeur);
    }

    public void nouvellePartie() {
        nouvellePartiePanel.reset();
        nouvellePartiePanel.setVisible(true);
        chargerPartiePanel.setVisible(false);
        topTenPanel.setVisible(false);
        setVisibleButton(false);
    }

    public void chargerPartie() {
        chargerPartiePanel.reset();
        chargerPartiePanel.setVisible(true);
        nouvellePartiePanel.setVisible(false);
        topTenPanel.setVisible(false);
        setVisibleButton(false);
    }

    public void topScore() {
        topTenPanel.reset();
        topTenPanel.setVisible(true);
        nouvellePartiePanel.setVisible(false);
        chargerPartiePanel.setVisible(false);
        setVisibleButton(false);
    }

    public void menuPrincipal() {
        setVisibleButton(true);
        nouvellePartiePanel.setVisible(false);
        chargerPartiePanel.setVisible(false);
        topTenPanel.setVisible(false);
    }
}
